/**
 * 地区优化相关类型定义
 * 专为优化后的地区数据接口设计，独立定义避免依赖
 */

/**
 * 地区级别枚举
 */
export type RegionLevel = 1 | 2 | 3

/**
 * 优化后的基础地区信息
 * 专为级联选择器优化的数据结构
 */
export interface OptimizedRegion {
  value: number // 对应id，用于级联选择器的value
  label: string // 对应name，用于级联选择器的label
  level: RegionLevel
  parent_id: number
  initial: string
  pinyin: string
  code?: string
  zip_code?: string
  has_children?: boolean
  create_time?: string
  update_time?: string
  children?: OptimizedRegion[] // 子级地区，用于级联选择
  leaf?: boolean // 是否为叶子节点
}

/**
 * 地区搜索结果（优化版）
 */
export interface OptimizedRegionSearchResult {
  value: number
  label: string
  parent_id: number
  level: RegionLevel
  initial: string
  pinyin: string
  full_name: string
  path: string
  code?: string
}

/**
 * 级联选择器节点数据结构
 * 专为Element Plus的el-cascader组件优化
 */
export interface OptimizedCascaderOption {
  value: number
  label: string
  level: RegionLevel
  parent_id: number
  leaf?: boolean
  children?: OptimizedCascaderOption[]
}

/**
 * 懒加载参数
 */
export interface OptimizedLazyLoadParams {
  value: number
  level: RegionLevel
}

/**
 * 地区查询参数（优化版）
 */
export interface OptimizedRegionQueryParams {
  parent_id?: number
  level?: RegionLevel
  keyword?: string
  limit?: number
  offset?: number
}

/**
 * 地区分页响应（优化版）
 */
export interface OptimizedRegionPageResponse {
  list: OptimizedRegion[]
  total: number
  page: number
  limit: number
}

/**
 * 缓存数据结构（优化版）
 */
export interface OptimizedRegionCacheData {
  provinces: OptimizedRegion[]
  cities: Map<number, OptimizedRegion[]>
  districts: Map<number, OptimizedRegion[]>
  lastUpdate: number
}

/**
 * 地区路径信息（优化版）
 */
export interface OptimizedRegionPath {
  province: OptimizedRegion | null
  city: OptimizedRegion | null
  district: OptimizedRegion | null
}

// 移除默认导出，避免与命名导出冲突
